2024年3月蓝桥杯蓝桥Python(STEMA)中/高级
STEMA
2024
2025-06-08 14:41:10
104次
一、单选题
二、编程题
ABB 字符串
提示信息:
ABB 形式的字符串:是由 3 个字符组成,其中后两个字符相同,第一个字符与后两个字符不同。
如:"cbb"、"q22"、"688" 都是 ABB 形式的字符串;"abc"、"wwe"、"pop" 都不是 ABB 形式的字符串。
子串:是指一个字符串中连续的一段字符序列。
如:字符串 "HelloWorld!" 中,"Hello"、"ello"、"World"、"or" 都是该字符串的子串。
编程实现:
给定一个字符串 S,请统计 S 中有多少个 ABB 形式的子串,以及多少种 ABB 形式的子串。
例如:S = "nnnseebbetoosee",ABB 形式的子串有 see、ebb、too、see,共 4 个;ABB 形式的不同子串有 see、ebb、too,共 3 种。
输入描述:
输入一个长度不超过 100 的字符串 S
输出描述:
输出两个整数,分别表示 S 中有多少个 ABB 形式的子串,以及多少种 ABB 形式的子串,整数之间以一个空格隔开
样例输入:
nnnseebbetoosee
样例输出:
4 3
【知识点】 蓝桥杯Python中/高级
最多字母路径
编程实现:
有一个 N 行 N 列的网格,网格里的每个格子都有一个字母,每个字母只能是 p、y、t、h、o、n 中的字母。
一台机器人按照以下规则移动:
1、起始位置可以选择网格中任意一个格子,起始位置的字母不一定为 p;
2、每次只能向上下左右相邻的任意一个格子移动一格,并且经过的格子不能再次经过;
3、每次移动的格子中的字母必须按照以下环形的顺序,如下图所示:

例如:当前字母为 t,那么移动的下一个格子中的字母必须为 h。
给定 N 行 N 列的网格,请计算机器人最多可以经过多少个字母。
例如:N = 4,4 行 4 列的网格中的字母如左图,可经过最多字母的移动路径如右图:

以第三行第二列的 h 作为起始位置,按照 h→o→n→p→y→t→h 的顺序移动,机器人经过的字母最多,可以经过 7 个字母。
输入描述:
第一行输入一个整数 N(2≤N≤50),表示网格的行数和列数
接下来输入 N 行,每行 N 个字母,每个字母只能是 p、y、t、h、o、n 中的字母,字母之间以一个空格隔开
输出描述:
输出一个整数,表示机器人最多可以经过多少个字母
样例输入:
4 y n p p t o y t n h p h n h o t
样例输出:
7
【知识点】 蓝桥杯Python中/高级
青蛙跳格子
编程实现:
有 71 个大小相等的格子从左到右排成一排,编号从 0 到 70,其中 N 个格子有荷叶,初始时青蛙在编号为 0 的格子。青蛙要按照以下规则,跳到最后一个有荷叶的格子:
1、青蛙每次最少跳 1 格,最多跳 x 格;
2、青蛙每次只能跳到有荷叶的格子;
3、青蛙不能往回跳。
给定 N 个有荷叶的格子编号,以及青蛙每次最多可以跳的格子数 x。请计算青蛙一共有多少种不同的方式跳到最后一个有荷叶的格子,如果青蛙不能跳到最后一个有荷叶的格子,输出 0。
例如:N = 4,x = 3,4 个有荷叶的格子编号依次为 1、3、4、6,青蛙每次最多跳 3 格;

青蛙有以下不同的方式跳到最后一个有荷叶的格子(6 号格子):
第一种:先跳到编号 1 的格子,接着跳到编号 3 的格子,再跳到编号 4 的格子,最后跳到编号 6 的格子;

第二种:先跳到编号 1 的格子,再跳到编号 3 的格子,最后跳到编号 6 的格子;

第三种:先跳到编号 1 的格子,再跳到编号 4 的格子,最后跳到编号 6 的格子;

第四种:先跳到编号 3 的格子,再跳到编号 4 的格子,最后跳到编号 6 的格子;

第五种:先跳到编号 3 的格子,最后跳到编号 6 的格子。

青蛙一共有 5 种不同的方式跳到最后一个有荷叶的格子。
输入描述:
第一行输入一个整数 N(3 ≤ N ≤ 30),表示有荷叶的格子数
第二行按从小到大的方式输入 N 个互不相同的整数(1 ≤ 整数 ≤ 70),表示有荷叶的格子编号,整数之间以一个空格隔开
第三行输入一个整数 x(1 ≤ x ≤ 5),表示青蛙每次最多可以跳的格子数
输出描述:
输出一个整数,表示青蛙一共有多少种不同的方式跳到最后一个有荷叶的格子
样例输入:
4 1 3 4 6 3
样例输出:
5
【知识点】 蓝桥杯Python中/高级
